package exception;

/**
 * throw关键字，用于将一个异常抛出
 * 通常下列情况会主动将一个异常抛出到方法外
 * 1:当前代码片段出现了异常，但是该异常不应在这里被处理(责任制问题)
 * 2:程序可以运行，但是运行情况不符合业务设计需求(本案例演示这种场景)
 */
public class ThrowDemo {
    public static void main(String[] args) {
        Person p = new Person();
//        p.setAge(18);
        try {
            /*
                当我们调用一个含有throws声明异常抛出的方法时，编译器要求
                必须处理该异常。
                处理方式有两种:
                1:使用try-catch捕获并处理该异常
                2:在当前方法上继续使用throws声明对该异常的抛出
                具体选取哪种方式，取决于责任制问题

                注意，永远不应当在main方法上写throws
             */
            p.setAge(1000);//违背设计要求
        } catch (IllegalAgeException e) {
           e.printStackTrace();
        }

        System.out.println("此人年龄:"+p.getAge());
    }
}
